import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.*;
import javax.swing.*;

@SuppressWarnings("serial")
public class Bernoull extends JPanel implements ActionListener {
	JLabel mitmest, mitmeKaupa, toenaosus, vastus1;
	JButton vasta;
	JTextField n, k, t, v;
	long nl, kl;
	double tt;
	boolean vastus = true;

	public long faktoriaal(long nr) {
		long vastus = 1;
		for (int i = 1; i <= nr; i++) {
			vastus = vastus * i;
		}
		return vastus;
	}

	public void error(String string) {
		v.setText("Lahtris \"" + string + "\" peab olema number!");
		vastus = false;
	}

	public Bernoull() {

		setLayout(new GridLayout(10, 1));
        JPanel eslahter = new JPanel(new FlowLayout(FlowLayout.LEADING));
		// LAHTRID
		mitmest = new JLabel("Mitmest: ");
		n = new JTextField(5);
		eslahter.add(mitmest);
		eslahter.add(n);

		mitmeKaupa = new JLabel("Mitme kaupa: ");
		k = new JTextField(2);
		eslahter.add(mitmeKaupa);
		eslahter.add(k);

		toenaosus = new JLabel("Tõenäosus: ");
		t = new JTextField(4);
		eslahter.add(toenaosus);
		eslahter.add(t);
		
		
        
		add(eslahter); 
		
		vastus1 = new JLabel("Vastus: ");
		v = new JTextField(15);
		v.setEditable(false);
		JPanel telahter = new JPanel(new FlowLayout(FlowLayout.LEADING));
		telahter.add(vastus1);
		telahter.add(v);
		
		// END OF: LAHTRID

	

		// VASTA NUPP
		vasta = new JButton("Arvuta");
		vasta.addActionListener(this);
		JPanel kolahter = new JPanel(new FlowLayout(FlowLayout.LEADING));
		
		kolahter.add(vasta);	
		JLabel asi = new JLabel();
		kolahter.add(asi);
		add(kolahter);
       
		add(telahter);
		
	}

	public void actionPerformed(ActionEvent e) {
		if (e.getActionCommand() == "Arvuta") {
			vastus = true;
			try {
				nl = Long.parseLong(n.getText());
			} catch (NumberFormatException evt) {
				error("Mitmest");
			}
			try {
				kl = Long.parseLong(k.getText());
			} catch (NumberFormatException evt) {
				error("Mitme kaupa");
			}
			try {
				tt = Double.parseDouble(t.getText());
			} catch (NumberFormatException evt) {
				error("Tõenäosus");
			}

			if (vastus) {
				long vahe = nl - kl;

				long nf = faktoriaal(nl);
				long kf = faktoriaal(kl);
				long vahef = faktoriaal(vahe);
				if (tt <= 1 && tt >= 0) {
					double vastus1 = (nf / (kf * vahef)) * Math.pow(tt, kl)
							* Math.pow(1 - tt, vahe);
					v.setText(vastus1 + "");
				} else {
					v.setText("Tõenäosus peab jääma 0 ja 1 vahele!");
				}
			}
		}
	}
}
